core: Add API to validate rev
authorColin Walters <walters@verbum.org>
Mon, 27 Feb 2012 13:37:37 +0000 (08:37 -0500)
committerColin Walters <walters@verbum.org>
Mon, 27 Feb 2012 13:37:37 +0000 (08:37 -0500)
src/libostree/ostree-core.c
src/libostree/ostree-core.h
src/libostree/ostree-repo.c

index 929d8345aa2c01d9cf470b3874429b8e98445a66..3fe6d220a118d7d49de892180505426fe54dd3db 100644 (file)
@@ -58,6 +58,29 @@ ostree_validate_checksum_string (const char *sha256,
   return TRUE;
 }
 
+gboolean
+ostree_validate_rev (const char *rev,
+                     GError **error)
+{
+  gboolean ret = FALSE;
+  GPtrArray *components = NULL;
+
+  if (!ot_util_path_split_validate (rev, &components, error))
+    goto out;
+
+  if (components->len == 0)
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                   "Invalid empty rev");
+      goto out;
+    }
+
+  ret = TRUE;
+ out:
+  g_ptr_array_unref (components);
+  return ret;
+}
+
 GVariant *
 ostree_wrap_metadata_variant (OstreeObjectType  type,
                               GVariant         *metadata)
index 0772ca902c550dae4ede6d2b056152d327a537e3..24489ce3de898a311b031623f49f4229abf6a487 100644 (file)
@@ -100,6 +100,8 @@ typedef enum {
 gboolean ostree_validate_checksum_string (const char *sha256,
                                           GError    **error);
 
+gboolean ostree_validate_rev (const char *rev, GError **error);
+
 void ostree_checksum_update_stat (GChecksum *checksum, guint32 uid, guint32 gid, guint32 mode);
 
 const char * ostree_object_type_to_string (OstreeObjectType objtype);
index 0192b7a162929569c322b4f3089693bb788bf9ba..dc0baef72f834840aa0425699dc6ed8b7d339741 100644 (file)
@@ -339,20 +339,11 @@ ostree_repo_resolve_rev (OstreeRepo     *self,
   
   g_return_val_if_fail (rev != NULL, FALSE);
 
-  /* This checks for .. and such, but we don't actually walk
-   * the parsed bits below.
-   */
-  if (!ot_util_path_split_validate (rev, &components, error))
+  if (!ostree_validate_rev (rev, error))
     goto out;
 
-  if (components->len == 0)
-    {
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                   "Invalid empty rev");
-      goto out;
-    }
   /* We intentionally don't allow a ref that looks like a checksum */
-  else if (ostree_validate_checksum_string (rev, NULL))
+  if (ostree_validate_checksum_string (rev, NULL))
     {
       ret_rev = g_strdup (rev);
     }